#include "liste_niveau.h"
#include <iostream>
#include <assert.h>
using namespace std;

liste_niveau* creerListeNiveauFichier(const char filename[])
{
              FILE* f;
              int nbr;
              liste_niveau* lniv;
              char chaine[20]; /// On retire la première ligne parce que pour que ça ne bug pas il faut quelle soit vide -_-"
              lniv=new(liste_niveau);	///on alloue la memoire pour une liste de niveau
              f=fopen(filename,"r");	///on ouvre le fichier
              if(f==NULL)	///On fait le test usuel de lors de l'ouverture du fichier
              {
                         printf("ERREUR dans l'ouverture du fichier");
                         assert(f);	///et on arrete la fonction si erreur
              }
              fgets(chaine,20,f);	///on saute la première ligne
              fscanf(f,"%d\n",&nbr);	///on recup le nombre de niveaux

              ListeNiveauSetNbrNiveau(lniv,nbr);	///on initialiste le nombre de niveaux
              ListeNiveauSetNiveau(lniv,creerNiveau(f,ListeNiveauGetNbrNiveau(lniv),NULL));	///on cree le premier niveau

              fclose(f);	///et on ferme le fichier ^^
              return lniv;
}

void supprimeListeNiveau(liste_niveau* lniv)
{
     supprimeNiveau(ListeNiveauGetNiveau(lniv));///on supprime d'abord les niveaux
     delete(lniv);	///puis on libere la memoire
}

void afficheListeNiveau(liste_niveau* lniv)
{
     cout<<ListeNiveauGetNbrNiveau(lniv)<<endl;	///on affiche le nombre de niveaux
     afficheNiveau(ListeNiveauGetNiveau(lniv));	///puis le niveau
}

Niveau* ListeNiveauGetNiveau(const liste_niveau* lniv)
{
        return lniv->niv;
}

int ListeNiveauGetNbrNiveau(const liste_niveau* lniv)
{
    return lniv->nbrNiveau;
}

void ListeNiveauSetNiveau(liste_niveau* lniv, Niveau* niv)
{
     lniv->niv=niv;
}

void ListeNiveauSetNbrNiveau(liste_niveau* lniv,int nbr)
{
     lniv->nbrNiveau = nbr;
}

Terrain* lnivChercheTerrain(liste_niveau* lniv,int numNiv,int numTer)
{
         return nivChercheTerrain(ListeNiveauGetNiveau(lniv),numNiv,numTer);
}

Niveau* lnivChercheNiveau(liste_niveau* lniv,int numNiv)
{
    return nivChercheNiveau(ListeNiveauGetNiveau(lniv),numNiv);
}
